/**
    Copyright (c) 2010 yakiimo02
    Distributed under the New BSD License.
    See included license.txt or http://www.yakiimo3d.com/NewBSDLicense.txt
**/

#pragma once

#include "reference/SmallPtStructs.h"

#include <vector>

class DataBufferDX11;

namespace REF
{

/**    
    @brief   CPU implemention of smallpt.
             Should be same as the original smallpt code.
    @author  yakiimo02
    @date    2010/01/30
*/
class SmallPtCPU
{
public:
    SmallPtCPU();
    ~SmallPtCPU();

    void Create( DataBufferDX11* pDataBuffer );
    void Render( ID3D11Device* pd3dDevice, ID3D11DeviceContext* pd3dImmediateContext, DataBufferDX11* pDataBuffer );
    void Destroy();

protected:
    std::vector< Vec >        m_buffer;
};

}